#include "imMaths.h"

//
// Maths functions
//
template <typename Real>
Real Maths<Real>::ACos (Real fValue) {
	return acos(fValue);
}

template <typename Real>
Real Maths<Real>::ASin (Real fValue) {
	return asin(fValue);
}

template <typename Real>
Real Maths<Real>::ATan (Real fValue) {
	return atan(fValue);
}

template <typename Real>
Real Maths<Real>::ATan2 (Real fY, Real fX) {
	return atan2(fY, fX);
}

template <typename Real>
Real Maths<Real>::Ceil (Real fValue) {
	return ceil(fValue);
}

template <typename Real>
Real Maths<Real>::Cos (Real fValue) {
	return cos(fValue);
}

template <typename Real>
Real Maths<Real>::Exp (Real fValue) {
	return exp(fValue);
}

template <typename Real>
Real Maths<Real>::FAbs (Real fValue) {
	return fabs(fValue);
}

template <typename Real>
Real Maths<Real>::FMod (Real fX, Real fY) {
	return fmod(fX, fY);
}

template <typename Real>
Real Maths<Real>::Floor (Real fValue) {
	return floor(fValue);
}

template <typename Real>
Real Maths<Real>::InvSqrt (Real fValue) {
	return 1.0/sqrt(fValue);
}

template <typename Real>
Real Maths<Real>::Log (Real fValue) {
	return log(fValue);
}

template <typename Real>
Real Maths<Real>::Pow (Real fBase, Real fExponent) {
	return pow(fBase, fExponent);
}

template <typename Real>
Real Maths<Real>::Sin (Real fValue) {
	return sin(fValue);
}

template <typename Real>
Real Maths<Real>::Sqr (Real fValue) {
	return fValue * fValue;
}

template <typename Real>
Real Maths<Real>::Sqrt (Real fValue) {
	return sqrt(fValue);
}

template <typename Real>
Real Maths<Real>::Tan (Real fValue) {
	return tan(fValue);
}